The present invention relates to transmitting data, and in particular, transmitting data efficiently in a manner that guarantees delivery.
One critical function performed by a computer system is transmitting data between processes that may reside on the same or different computer systems. To transmit data between processes, the processes use a transport mechanism. A transport mechanism is a combination software and hardware that is used to transport data between processes. A transport mechanism may include a combination of, for example, a network, a network card, and interface software that allows a process to transmit data over the network. Often, transport mechanisms are accessed through the use of utilities provided by an operating system, such as sockets available in UNIX. To transmit data, a process invokes an operating system utility, which in turn communicates with the hardware of the computer system to transmit data over a network to another computer.
Transport mechanisms follow a protocol when transmitting data. A protocol is a set of rules, procedures, and conventions that govern the process of transmitting data. Examples of conventional protocols are the Transmission Control Protocol (TCP) and User Datagram Protocol (UDP). Protocols involve a tradeoff between two competing transport mechanism characteristicsxe2x80x94reliability and speed.
Reliability refers to a transport mechanism""s ability to guarantee delivery of data transmitted by a sender to a receiver. A sender is a process that invokes a transport mechanism to transmit data to another process referred to as the receiver. A reliable transport mechanism guarantees delivery of data transmitted by a sender to a receiver. Transport mechanisms that use TCP are examples of reliable transport mechanisms. An unreliable transport mechanism does not guarantee delivery of data. Transport mechanisms that use UDP are examples of unreliable transport mechanisms.
In general, reliable transport mechanisms are not as fast as unreliable transport mechanisms. Reliable transport mechanisms invoke procedures, such as handshaking algorithms, that ensure that data transmitted is delivered. These procedures, while ensuring delivery, cause greater overhead and latency. For example, a reliable transport mechanism is used to transmit data over a network from a sending node to a receiving node. Data transmitted over the network to the receiving node is stored in buffers. When the receiving node receives the data, it transmits an acknowledgement to the sending node. When the sending node receives the acknowledgement, it releases the buffers, enabling them to be used for other purposes. If the sending node does not receive an acknowledgement from the receiving node after a period of time, then the sending node retransmits the data to the receiving node.
Based on the foregoing, it is clearly desirable to provide a method and mechanism for reliably transporting data without incurring the overhead incurred by conventional reliable transport mechanisms.
A method and mechanism is described for reliably transmitting messages over an unreliable transport mechanism. According to an aspect of the present invention, a sender transmits a first message over an unreliable mechanism to a receiver, and a second message that identifies the first is transported over a reliable transport mechanism to the receiver. When the receiver receives the second message, the receiver determines whether it has received the first message. If not, the receiver requests retransmission of the first message.